home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Mousebroken 1.0.1 / source / Modules source ƒ / Crooked mouse / Crooked module.c next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  855 b   |  66 lines  |  [TEXT/KAHL]

  1. /* Crooked mouse -- a Mousebroken module */
  2. /* written by Mark Pilgrim, November 1993 */
  3. /* This module placed in the public domain. */
  4.  
  5. #include "Retrace.h"
  6.  
  7. extern Boolean CrsrNew : 0x8CE;
  8. extern Point mTemp : 0x828;
  9. extern Point RawMouse : 0x82C;
  10.  
  11. unsigned long    me;
  12. int                oldX, oldY;
  13.  
  14. void header(void);
  15. void main(void);
  16.  
  17. void header(void)
  18. {
  19.     asm
  20.     {
  21.         dc.l    0
  22.         move.l a0, d0
  23.         lea header, a0
  24.         jmp main
  25.     }
  26. }
  27.  
  28. #include "SetUpA4.h"
  29.  
  30. void main(void)
  31. {
  32.     VBLTask*        myVBL;
  33.     int                vx,vy;
  34.     
  35.     RememberA0();
  36.     SetUpA4();
  37.     
  38.     asm
  39.     {
  40.         move.l d0, myVBL
  41.     }
  42.     
  43.     if (me != 'MMdl')
  44.     {
  45.         me = 'MMdl';
  46.         oldX=RawMouse.h;
  47.         oldY=RawMouse.v;
  48.     }
  49.     
  50.     vx=RawMouse.h-oldX;
  51.     vy=RawMouse.v-oldY;
  52.     
  53.     RawMouse.h+=vy;
  54.     mTemp.h+=vy;
  55.     RawMouse.v-=vx;
  56.     mTemp.v-=vx;
  57.  
  58.     oldX=RawMouse.h;
  59.     oldY=RawMouse.v;
  60.     
  61.     if ((vx!=0) || (vy!=0))
  62.         CrsrNew = TRUE;
  63.     myVBL->vblCount = 1;
  64.     RestoreA4();
  65. }
  66.